package JDBC.Day06;

import java.sql.*;

/**
 *  案例 -- 登陆注册
 *      通过sql的查询语句查询表中是否有符合的用户名和密码
 */
public class TestDemo {
    public static void main(String[] args) {
        boolean flag = login("周星驰", "ZhouXingChi");
        if(flag) {
            System.out.println("登陆成功！");
        } else {
            System.out.println("用户名或密码错误");
        }
    }


    public static boolean login(String username, String password) {
        if(username != null && password != null) {

            //1. 获取连接对象
            //2. 创建sql执行对象
            //3. 定义sql语句
            //4. 执行sql
            //5. 处理结果集

            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet resultSet = null;
            try {
                conn = JDBCUtils.getConnection();

                // 使用预编译的SQL语句对象
                // 防止SQL注入问题 -- 静态sql语句可以通过输入 or 关键字破坏语句逻辑
                String sql = "select * from user where name=? and password=?";
                // 获取对象并传递sql语句
                // 使用 ? 作为占位符
                pstmt = conn.prepareStatement(sql);
                // 给 ? 赋值
                // setXXX()方法，参数1是?的位置（从1开始），参数2是?的值
                pstmt.setString(1, username);
                pstmt.setString(2, password);
                // 获取结果集
                resultSet = pstmt.executeQuery();
                // 判断只需要判断结果集中是否有值
                return resultSet.next();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                JDBCUtils.close(resultSet, pstmt, conn);
            }

            return false;
        }

        return false;
    }
}
